<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>EL表达式语言语言使用测试</title>
		<!-- 设置不缓存 -->
		<meta http-equiv="pragma" content="no-cache" />
		<meta http-equiv="cache-control" content="no-cache" />
		<meta http-equiv="expires" content="0" />
	</head>
	<body>
		<h1>
			EL表达式语言使用测试：要求本JSP支持EL表达式
		</h1>
		<h2>
			结果页面，显示提交的结果
		</h2>
		
    
     
     <table border="2" cellpadding="5">
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">行号</td>
	     	<td style="text-align: center;font-weight: bolder;">测试目标</td>
	     	<td style="text-align: center;font-weight: bolder;">语法方案</td>
	     	<td style="text-align: center;font-weight: bolder;">语法格式</td>
	     	<td style="text-align: center;font-weight: bolder;">使用示例</td>
	     	<td style="text-align: center;font-weight: bolder;">结果显示</td>
	     	<td style="text-align: center;font-weight: bolder;">相应赋值示例</td>
	     	<td style="text-align: center;font-weight: bolder;">可行性</td>
	     	<td style="text-align: center;font-weight: bolder;">总结</td>
	     	<td style="text-align: center;font-weight: bolder;">备注（前提、要求）</td>
	     </tr>
	     <!-- 测试访问提交的简单参数 -->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">1</td>
	     	<td rowspan="3">输出提交的简单参数</td>
	     	<td>Java脚本</td>
	     	<td>&lt;%=request.getParameter(&quot;简单参数名&quot;) %&gt;</td>
	     	<td>&lt;%=request.getParameter(&quot;name&quot;) %&gt;</td>
	     	<td>cba</td>
	     	<td>&lt;input name="name" value=""&gt;或url?name=xxxxx</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td></td>
	     </tr>
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">2</td>
	     	<td>EL表达式语言</td>
	     	<td>（1）${param['简单参数名'] } 或（2）${param.简单参数名 } 或（3）${paramValues['简单参数名'][0] } 或（4）${paramValues.简单参数名[0] } </td>
	     	<td>（1）${param['name'] } 或（2）${param.name } 或（3）${paramValues['name'][0] } 或（4）${paramValues.name[0] } </td>
	     	<td>（1）cba 或（2）cba 或（3）cba 或（4）cba </td>
	     	<td>同上</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     <tr style="color: red">
	     	<td style="text-align: center;font-weight: bolder;">3</td>
	     	<td>EL表达式语言（测试）</td>
	     	<td>${简单参数名 }</td>
	     	<td>${name }</td>
	     	<td></td>
	     	<td>同上</td>
	     	<td style="color: red;font-weight: bolder;">NO</td>
	     	<td></td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 测试访问提交的复杂参数 -->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">4</td>
	     	<td rowspan="3">输出提交的复杂参数</td>
	     	<td>Java脚本</td>
	     	<td>&lt;%=request.getParameter(&quot;复杂参数名&quot;) %&gt;</td>
	     	<td>&lt;%=request.getParameter(&quot;user.name&quot;) %&gt;</td>
	     	<td>abc</td>
	     	<td>&lt;input name="user.name" value=""&gt;或url?user.name=xxxxx</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td></td>
	     </tr>
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">5</td>
	     	<td>EL表达式语言</td>
	     	<td>（1）${param['复杂参数名'] } 或（2）${paramValues['复杂参数名'][0] } </td>
	     	<td>（1）${param['user.name'] } 或（2）${paramValues['user.name'][0] }  </td>
	     	<td>（1）abc 或（2）abc </td>
	     	<td>同上</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     <tr style="color: red">
	     	<td style="text-align: center;font-weight: bolder;">6</td>
	     	<td>EL表达式语言（测试）</td>
	     	<td>（1）${复杂参数名 } 或（2）${param.复杂参数名 } 或（3）${paramValues.复杂参数名[0] } </td>
	     	<td>（1）${user.name } 或（2）${param.user.name } 或（3）${paramValues.user.name[0] } </td>
	     	<td>（1） 或（2） 或（3） </td>
	     	<td>同上</td>
	     	<td style="color: red;font-weight: bolder;">NO</td>
	     	<td></td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 测试访问pageContext内置对象 -->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">7</td>
	     	<td rowspan="2">访问pageContext内置对象</td>
	     	<td>Java脚本</td>
	     	<td>&lt;%=pageContext.getAttribute(&quot;参数名&quot;) %&gt;</td>
	     	<td>&lt;%=pageContext.getAttribute(&quot;pp&quot;) %&gt;</td>
	     	<td>pppppp</td>
	     	<td>（1）&lt;%pageContext.setAttribute("pp","pppppp"); %&gt; <br/>
	     		（2）&lt;%pageContext.setAttribute("pp","pppppp",PageContext.PAGE_SCOPE); %&gt;
	     	</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td></td>
	     </tr>
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">8</td>
	     	<td>EL表达式语言</td>
	     	<td>（1）${pageScope['参数名'] } 或（2）${pageScope.参数名 } 或（3）${参数名 } </td>
	     	<td>（1）${pageScope['pp'] } 或（2）${pageScope.pp } 或（3）${pp } </td>
	     	<td>（1）pppppp 或（2）pppppp 或（3）pppppp </td>
	     	<td>同上</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td>推荐使用方式（1），因为方式（2）和（3）对于复杂参数名无效。同时，方式（3）的取值优先级为pageContext>request>session>application，当较高优先级中有值时，不会再往下查找值。</td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 测试访问request内置对象 -->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">9</td>
	     	<td rowspan="2">访问request内置对象</td>
	     	<td>Java脚本</td>
	     	<td>&lt;%=request.getAttribute(&quot;参数名&quot;) %&gt;</td>
	     	<td>&lt;%=request.getAttribute(&quot;rr&quot;) %&gt;</td>
	     	<td>rrrrrrrr</td>
	     	<td>（1）&lt;%request.setAttribute("rr","rrrrrr"); %&gt; <br/>
	     		（2）&lt;%pageContext.setAttribute("rr","rrrrrr",PageContext.REQUEST_SCOPE); %&gt;
	     	</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td></td>
	     </tr>
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">10</td>
	     	<td>EL表达式语言</td>
	     	<td>（1）${requestScope['参数名'] } 或（2）${requestScope.参数名 } 或（3）${参数名 } </td>
	     	<td>（1）${requestScope['rr'] } 或（2）${requestScope.rr } 或（3）${rr } </td>
	     	<td>（1）rrrrrrrr 或（2）rrrrrrrr 或（3）rrrrrrrr </td>
	     	<td>同上</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td>推荐使用方式（1），因为方式（2）和（3）对于复杂参数名无效。同时，方式（3）的取值优先级为pageContext>request>session>application，当较高优先级中有值时，不会再往下查找值。</td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 测试访问session内置对象 -->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">9</td>
	     	<td rowspan="2">访问session内置对象</td>
	     	<td>Java脚本</td>
	     	<td>&lt;%=session.getAttribute(&quot;参数名&quot;) %&gt;</td>
	     	<td>&lt;%=session.getAttribute(&quot;ss&quot;) %&gt;</td>
	     	<td>ssssssss</td>
	     	<td>（1）&lt;%session.setAttribute("ss","ssssss"); %&gt; <br/>
	     		（2）&lt;%pageContext.setAttribute("ss","ssssss",PageContext.SESSION_SCOPE); %&gt;
	     	</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td></td>
	     </tr>
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">10</td>
	     	<td>EL表达式语言</td>
	     	<td>（1）${sessionScope['参数名'] } 或（2）${sessionScope.参数名 } 或（3）${参数名 } </td>
	     	<td>（1）${sessionScope['ss'] } 或（2）${sessionScope.ss } 或（3）${ss } </td>
	     	<td>（1）ssssssss 或（2）ssssssss 或（3）ssssssss </td>
	     	<td>同上</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td>推荐使用方式（1），因为方式（2）和（3）对于复杂参数名无效。同时，方式（3）的取值优先级为pageContext>request>session>application，当较高优先级中有值时，不会再往下查找值。</td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 测试访问application内置对象 -->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">11</td>
	     	<td rowspan="2">访问application内置对象</td>
	     	<td>Java脚本</td>
	     	<td>&lt;%=application.getAttribute(&quot;参数名&quot;) %&gt;</td>
	     	<td>&lt;%=application.getAttribute(&quot;aa&quot;) %&gt;</td>
	     	<td>aaaaaaaaaa</td>
	     	<td>（1）&lt;%application.setAttribute("aa","aaaaaa"); %&gt; <br/>
	     		（2）&lt;%pageContext.setAttribute("aa","aaaaaa",PageContext.APPLICATION_SCOPE); %&gt;
	     	</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td></td>
	     </tr>
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">12</td>
	     	<td>EL表达式语言</td>
	     	<td>（1）${applicationScope['参数名'] } 或（2）${applicationScope.参数名 } 或（3）${参数名 } </td>
	     	<td>（1）${applicationScope['aa'] } 或（2）${applicationScope.aa } 或（3）${aa } </td>
	     	<td>（1）aaaaaaaaaa 或（2）aaaaaaaaaa 或（3）aaaaaaaaaa </td>
	     	<td>同上</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td>推荐使用方式（1），因为方式（2）和（3）对于复杂参数名无效。同时，方式（3）的取值优先级为pageContext>request>session>application，当较高优先级中有值时，不会再往下查找值。</td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 测试访问cookie内置对象 -->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">13</td>
	     	<td rowspan="2">访问cookie内置对象</td>
	     	<td>Java脚本</td>
	     	<td>
<pre>
&lt;% 
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie cc:cookies){
	if(cc.getName().equals("参数key名")){
		out.print(cc.getValue());
	}
}
}
%&gt;
</pre>
	     	</td>
	     	<td>
<pre>
&lt;% 
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie cc:cookies){
	if(cc.getName().equals("cc")){
		out.print(cc.getValue());
	}
}
}
%&gt;
</pre>
	     	</td>
	     	<td>
		     	cccccc
	     	</td>
	     	<td>
<pre>
&lt;% 
Cookie ck = new Cookie("cc","cccccc");
ck.setMaxAge(24*3600);
response.addCookie(ck);
%&gt;
</pre>
	     	</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td></td>
	     </tr>
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">14</td>
	     	<td>EL表达式语言</td>
	     	<td>（1）${cookie['参数key名'].value } 或（2）${cookie.参数key名.value } </td>
	     	<td>（1）${cookie['cc'].value } 或（2）${cookie.cc.value } </td>
	     	<td>（1）cccccc 或（2）cccccc </td>
	     	<td>同上</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td>推荐使用方式（1），因为方式（2）对于复杂参数key名无效。</td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 测试访问请求头header信息 -->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">15</td>
	     	<td rowspan="2">访问请求头header信息</td>
	     	<td>Java脚本</td>
	     	<td>&lt;%=request.getHeader("参数名") %&gt;</td>
	     	<td>&lt;%=request.getHeader("host") %&gt;</td>
	     	<td>localhost:8080</td>
	     	<td>请求头header不需要赋值</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td></td>
	     </tr>
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">16</td>
	     	<td>EL表达式语言</td>
	     	<td>（1）${header['参数名'] } 或（2）${header.参数名 } 或（3）${headerValues['参数名'][0] } 或（4）${headerValues.参数名[0] } </td>
	     	<td>（1）${header['host'] } 或（2）${header.host } 或（3）${headerValues['host'][0] } 或（4）${headerValues.host[0] } </td>
	     	<td>（1）localhost:8080 或（2）localhost:8080 或（3）localhost:8080 或（4）localhost:8080 </td>
	     	<td>同上</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td>推荐使用方式（1）和（3），因为方式（2）和（4）对于复杂参数名无效。</td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 测试访问Web应用的初始配置参数 -->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">17</td>
	     	<td rowspan="2">访问Web应用的初始配置参数</td>
	     	<td>Java脚本</td>
	     	<td>&lt;%=application.getInitParameter("参数名") %&gt;</td>
	     	<td>（1）&lt;%=application.getInitParameter("abcd") %&gt; <br/>
	     		（2）&lt;%=this.getServletContext().getInitParameter("abcd") %&gt;
	     	</td>
	     	<td>（1）12358 或（2）12358</td>
	     	<td>
<pre>
配置Web应用的web.xml文件：
&lt;context-param&gt;
	&lt;param-name&gt;abcd&lt;/param-name&gt;
	&lt;param-value&gt;12358&lt;/param-value&gt;
&lt;/context-param&gt;
</pre>
	     	</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td></td>
	     </tr>
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">18</td>
	     	<td>EL表达式语言</td>
	     	<td>（1）${initParam['参数名'] } 或（2）${initParam.参数名 } </td>
	     	<td>（1）${initParam['abcd'] } 或（2）${initParam.abcd } </td>
	     	<td>（1）12358 或（2）12358 </td>
	     	<td>同上</td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td>推荐使用方式（1），因为方式（2）对于复杂参数名无效。</td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 测试获取所有的请求参数 （Map）-->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">19</td>
	     	<td rowspan="2">测试获取所有的请求参数（Map）</td>
	     	<td>Java脚本</td>
	     	<td>&lt;%=request.getParameterMap() %&gt;</td>
	     	<td>&lt;%=request.getParameterMap() %&gt;</td>
	     	<td>{user.name=[Ljava.lang.String;@5bfbd8, name=[Ljava.lang.String;@f33280, age=[Ljava.lang.String;@78ae82, user.age=[Ljava.lang.String;@109062e}</td>
	     	<td></td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td>扩展用法：&lt;%=request.getParameterMap().get("name") %&gt;，结果为[Ljava.lang.String;@f33280</td>
	     	<td></td>
	     </tr>
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">20</td>
	     	<td>EL表达式语言</td>
	     	<td>${paramValues } </td>
	     	<td>${paramValues } </td>
	     	<td>{user.name=[Ljava.lang.String;@788b76, name=[Ljava.lang.String;@c05c2, age=[Ljava.lang.String;@14e2c9c, user.age=[Ljava.lang.String;@152d950} </td>
	     	<td></td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td>扩展用法：参见第2行。<br/>
	     	（1）输出参数对象：${paramValues.name }，结果：[Ljava.lang.String;@391b0c <br/>
	     	（2）输出参数的属性值：${paramValues.name[0] }，或 ${paramValues['name'][0] } ，结果为：cba，或cba 
	     	</td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 测试获取所有的请求头 （Map）-->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">21</td>
	     	<td rowspan="2">测试获取所有的请求头（Map）</td>
	     	<td>Java脚本</td>
	     	<td>&lt;%=request.getHeaderNames() %&gt;</td>
	     	<td>&lt;%=request.getHeaderNames() %&gt;</td>
	     	<td>org.apache.tomcat.util.http.NamesEnumerator@5e9e34</td>
	     	<td></td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td>扩展用法：&lt;%=request.getHeaderNames().nextElement() %&gt;，结果为host</td>
	     	<td></td>
	     </tr>
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">22</td>
	     	<td>EL表达式语言</td>
	     	<td>${headerValues } </td>
	     	<td>${headerValues }</td>
	     	<td>{cookie=[Ljava.lang.String;@1e481c1, connection=[Ljava.lang.String;@102d81c, accept-language=[Ljava.lang.String;@1ba4806, host=[Ljava.lang.String;@ce82cc, accept=[Ljava.lang.String;@1ed56e2, user-agent=[Ljava.lang.String;@e345c2, referer=[Ljava.lang.String;@f8f332, accept-encoding=[Ljava.lang.String;@267f18}</td>
	     	<td></td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td>扩展用法：参见第16行。<br/>
	     	（1）输出属性对象：${headerValues.host }，结果为[Ljava.lang.String;@1623820 <br/>
	     	（2）输出属性值：方法一：${headerValues.host[0] }或${headerValues.host[0] }，方法二：${headerValues['host'][0] }或${headerValues['host'][0] }，这四种方式的结果都为localhost:8080 
	     	</td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 测试获取请求的参数字符串-->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">23</td>
	     	<td>测试获取请求的参数字符串</td>
	     	<td>EL表达式语言</td>
	     	<td>${pageContext.request.queryString } </td>
	     	<td>${pageContext.request.queryString } </td>
	     	<td>name=cba&age=20&user.name=abc&user.age=123 </td>
	     	<td></td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 获取请求的URL，但不包括请求之参数字符串-->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">24</td>
	     	<td>获取请求的URL，但不包括请求之参数字符串</td>
	     	<td>EL表达式语言</td>
	     	<td>${pageContext.request.requestURL } </td>
	     	<td>${pageContext.request.requestURL } </td>
	     	<td>http://localhost:8080/ognl4svn/el_result.jsp </td>
	     	<td></td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 获取请求的URI-->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">25</td>
	     	<td>获取请求的URI</td>
	     	<td>EL表达式语言</td>
	     	<td>${pageContext.request.requestURI } </td>
	     	<td>${pageContext.request.requestURI } </td>
	     	<td>/ognl4svn/el_result.jsp </td>
	     	<td></td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 获取部署的Web应用名称（上下文根路径）-->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">26</td>
	     	<td>获取部署的Web应用名称（上下文根路径）</td>
	     	<td>EL表达式语言</td>
	     	<td>${pageContext.request.contextPath } </td>
	     	<td>${pageContext.request.contextPath } </td>
	     	<td>/ognl4svn </td>
	     	<td></td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
	     
	     <!-- 获取请求HTTP的方法(GET、POST) -->
	     <tr>
	     	<td style="text-align: center;font-weight: bolder;">27</td>
	     	<td>获取请求HTTP的方法(GET、POST)</td>
	     	<td>EL表达式语言</td>
	     	<td>${pageContext.request.method } </td>
	     	<td>${pageContext.request.method } </td>
	     	<td>GET </td>
	     	<td></td>
	     	<td style="color: blue;font-weight: bolder;">YES</td>
	     	<td></td>
	     	<td>JSP页面支持EL表达式</td>
	     </tr>
     </table>
	</body>
</html>
